2024.06.17:
* changed: bin/contools/TODO.txt: todo update

2024.03.14:
* new: bin/contools: binaries update

2024.03.14:
* fixed: src/callf: revised control signals handling
* new: src/callf: added `/disable-ctrl-c-signal-no-inherit` to avoid a child process attribute inheritance
* changed: src/callf/version.def: version increment

2024.02.14:
* fixed: bin/wshbazaar/wshdynacall/*register.bat: pause skip in case of script early exit

2024.02.13:
* new: bin/wshbazaar/wshdynacall: binaries update

2024.02.13:
* fixed: src/wshbazaar/wshdynacall: Windows XP execution fixup, replaced `RegDeleteTree` function as existed only in Windows Vista+ by `SHDeleteKey` function as supported by Windows XP+

2024.02.13:
* fixed: Projects/wshdynacall.vcxproj: post build fixup
* fixed: bin/wshbazaar/wshdynacall/*register.bat: missed to pass arguments in case of register/unregister from 32-bit cmd.exe process
* new: bin/wshbazaar/README_EN.txt: readme file
* new: bin/wshbazaar/wshdynacall/dynwrap.dll: original binary component
* new: doc: site and related pages
* changed: Projects/wshdynacall.vcxproj: switched to `Visual Studio 2017 - Windows XP (v141_xp)` Platform Toolset
* changed: src/wshbazaar/wshdynacall/version.def: version increment
* changed: bin/contools/README_EN.txt: readme update

2024.02.12:
* new: bin/contools: binaries update

2024.02.12:
* fixed: src/callf: missed messages reprint into attached and new console

2024.02.12:
* fixed: src/callf: `/load-parent-proc-init-env-vars` flag fixup
* fixed: src/callf: `SetEnvironmentStrings*` functions existence check and usage

2024.02.12:
* changed: Projects: switched to `Visual Studio 2017 - Windows XP (v141_xp)` Platform Toolset

2024.02.06:
* changed: bin/contools/TODO.txt: todo update

2024.01.17:
* new: bin/wshbazaar/wshdynacall/*register.bat: register/unregister scripts

2024.01.13:
* changed: bin/contools/TODO.txt: todo update

2023.11.23:
* changed: bin/contools/README_EN.txt: readme update

2023.10.10:
* changed: bin/contools/TODO.txt: todo update

2023.10.06:
* changed: bin/contools/TODO.txt: todo update

2023.10.02:
* changed: bin/contools/TODO.txt: todo update

2023.10.01:
* fixed: src/callf: Win32 API functions dynamic load because of compatability with Windows XP
* fixed: src/callf: missed to collect early printed messages
* changed: src/callf: store size of allocated shared memory block in the beginning of a block (`/load-parent-proc-init-env-vars` flag implementation)
* changed: bin/contools/README_EN.txt: readme update
* changed: src/contools/version.def: version increment
* new: src/callf: added `/enable-wow64-fs-redir` as opposite to `/disable-wow64-fs-redir`
* new: src/callf: added `/print-dyn-dll-load-errors` to explicitly print dynamic DLL load errors

2023.09.30:
* changed: bin/contools/TODO.txt: todo update

2023.09.30:
* new: bin/contools: binaries update

2023.09.30:
* fixed: src/printf: execution fixup
* changed: src: exit codes reworked

2023.09.29
* new: src/thlibautocfg: added `-h <file-path-template>` option to split output into files with less than 64K length (or at least 1 line) included into the main output file
* new: src/thlibautocfg: added `-m <output-file-line-template>` option to insert into the main output file a custom template lines (`-h ...` option must be used)
* new: src/_common/std: c++ template and overload functions over std c functions
* changed: src, BuildTools: switched to use recent version of `thlibautocfg tool`
* chnaged: src/_common/std: reimplemented functions with `std::tstring` type into templated functions
* changed: src/*/version.def: versions increment
* refactor: src/thlibautocfg: code refactor
* refactor: src: moved files generation into `gen` subdirectory

2023.09.23:
* changed: bin/contools/TODO.txt: todo update

2023.09.22:
* changed: bin/contools/TODO.txt: todo update

2023.09.22:
* changed: bin/contools/README_EN.txt: readme update

2023.09.21:
* changed: bin/contools/TODO.txt: todo update

2023.09.20:
* changed: bin/contools/README_EN.txt: readme update

2023.09.20:
* changed: bin/contools/TODO.txt: todo update

2023.08.11:
* changed: src/callf: minor fixup

2023.08.07:
* changed: src/callf: use `/no-esc` as standalone flag and always use it in case of elevation/unelevation

2023.07.11:
* changed: bin/contools/TODO.txt: merged from the `dev` branch and extracted issues into `ISSUES.txt` file
* changed: src/callf/help.tpl: description update

2023.06.27:
* new: bin/contools: binaries update
* changed: src/callf/version.def: version increment

2023.06.27:
* new: src/callf: added the regular `/disable-backslash-esc`, `/no-esc` flags to disable all backslash escapes, added the same flag into `<ParentFlags>` and `<ChildFlags>` options
* changed: src/callf: changed behaviour of the regular `/no-expand-env` flag to affect all this- processes by default, added the same flag into `<ParentFlags>` and `<ChildFlags>` options
* changed: src/callf: changed behaviour of the regular `/allow-expand-unexisted-env` flag to affect all this- processes by default, added the same flag into `<ParentFlags>` and `<ChildFlags>` options
* changed: src/callf: flags and options validation messages refactor
* changed: src/callf/help.tpl: more details, added terms section
* refactor: Projects: cleanup

2023.06.24:
* changed: bin/contools/TODO.txt: todo update
* changed: src/callf/help.tpl: cleanup

2023.06.04:
* new: bin/contools: binaries update

2023.06.04:
* new: src/callf: added `/shift-<N>` option to shift positional arguments

2023.06.04:
* fixed: Projects: build fixup

2023.05.10:
* changed: src/callf/help.tpl: more details
* changed: bin/contools/TODO.txt: todo update

2023.05.08:
* changed: bin/contools/TODO.txt: todo update

2023.04.22:
* refactor: bin/xmlstarlet: xmlstarlet toolkit is moved to external repository

2023.04.22:
* refactor: bin/wkhtmltopdf: wkhtmltox toolkit is moved to external repository

2023.04.22:
* refactor: bin/thomaspolaert: Thomas Polaert cecho utility is moved to external repository

2023.04.22:
* refactor: bin/stevemiller: Steve P. Miller console toolbox utilities is moved to external repository

2023.04.22:
* refactor: bin/ss64.net: Frank P. Westlake utilities is removed as not required anymore

2023.04.22:
* refactor: bin/sqlite: sqlite utilities moved to external repository

2023.04.22:
* refactor: bin/Microsoft: uuidgen utility is removed as not required anymore

2023.04.22:
* refactor: bin/pstools, bin/sysinternals: sysinternals toolkit moved to external repository

2023.04.22:
* refactor: bin/hashdeep: hashdeep utilities moved to external repository

2023.04.22:
* refactor: bin/7zip: 7zip utilities moved to external repository

2023.03.21:
* changed: bin/contools/TODO.txt: todo update

2022.12.20:
* changed: bin/contools/TODO.txt: todo update

2022.10.27:
* changed: Utilities/bin/7zip: updated `7zip` up to version `22.01` for 32-bit and 64-bit (console only)

2022.10.27:
* changed: bin/contools/TODO.txt: todo update

2022.10.17:
* changed: bin/contools/TODO.txt: todo update

2022.09.05:
* changed: bin/contools/README_EN.txt: readme update
* changed: bin/contools/TODO.txt: todo update

2022.09.05:
* changed: bin/contools/README_EN.txt: readme update

2022.07.24:
* changed: bin/contools/TODO.txt: todo update

2022.07.19:
* changed: bin/contools/TODO.txt: todo update

2022.07.14:
* changed: bin/contools/TODO.txt: todo update

2022.07.13:
* changed: bin/contools/TODO.txt: todo update

2022.03.22:
* new: bin/contools: binaries update

2022.03.22:
* fixed: src/callf: command line parse fixup
* fixed: src/callf: execution fixup
* new: src/callf: `/shell-exec-unelevate-from-explorer` option to shell execute from COM interface
* changed: src/callf: ExecuteProcess partial reimplementation
* refactor: src/callf/help.tpl: help refactor

2022.03.22:
* fixed: src/callf: utf-16 text in non unicode locale print fixup

2022.03.21:
* new: bin/contools: binaries update

2022.03.21:
* fixed: src/callf: minor fixup
* new: src/callf: `/unelevate-by-shell-exec-from-explorer` option with different implementation to unelevate from COM interface

2022.03.19:
* new: bin/contools: binaries update

2022.03.19:
* new: src/callf: `unelevate*` options opposite to `/elevate*` options to execute command line from unelevated original account
* refactor: src/callf: code refactor

2022.02.27:
* changed: bin/contools/TODO.txt: todo update

2022.01.21:
* new: bin/contools: binaries update

2022.01.21:
* fixed: src/callf: `/load-parent-proc-init-env-vars` flag always been applied

2022.01.11:
* changed: bin/contools/TODO.txt: todo update

2022.01.11:
* new: bin/contools: binaries update

2022.01.11:
* fixed: src/callf: access violation on print into detached console on exit
* fixed: src/callf: accidental deadlock in worker threads on console access event
* new: src/callf: `/skip-pause-on-detached-console` flag to skip pause in case of detached console
* changed: src/callf: All `/pause*` flags now by default does restore console if was detached before (the console window search of does the same way as like for the `/attach-parent-console` flag). To skip that use `/skip-pause-on-detached-console` flag.
* changed: bin/contools/README_EN.txt: readme update

2022.01.10:
* new: bin/contools: binaries update

2022.01.10:
* new: src/callf: parent console attach on demand (or allocation of a new one if not found any in process inheritance chain) or on output into console if console been detached or unexisted
* new: src/callf: print into console in main thread from a worker thread stdout/stderr message buffer while waiting on a child exit

2022.01.09:
* fixed: src/callf: missed case where `ReadConsole` being blocked and there is no an output handle to write but a child process does exit anyway and we must check that independently to an output handle
* new: src/callf: full synchronization on console access: console attach/alloc/detach, console standard handles get/set, console input handle close, CRT standard handles reopen/close, console print
* changed: tests/manual/contools/callf: tests update
* changed: tests/README_EN.txt: readme update

2022.01.08:
* fixed: src/callf: always check CRT streams text mode and use only wide string print functions for not ansi text mode CRT streams (otherise an internal CRT assert will be called)
* fixed: src/callf: always read STD handles flags and modes before CRT handles detach in case of last STD handles close on CRT handles close
* new: src/callf: `/detach-inherited-console-on-wait` flag to detach console before wait on child process exit and reattach after exit (workaround to avoid losing arrows key interactive input handling in the child `cmd.exe` process - command line history traverse)
* changed: src/callf/help.tpl: help update
* changed: bin/contools/README_EN.txt: readme update
* refactor: src/callf: CRT reinitialization after console (re)attach refactor

2022.01.04:
* changed: README_EN.txt: merged into `bin/contools/README_EN.txt`
* changed: TODO.txt: moved to `bin/contools`
* changed: bin/contools/README_EN.txt: readme update

2022.01.04:
* fixed: src/callf: workaround for the `ReadConsole` issue when it writes an extra character to the input buffer

2022.01.03:
* changed: TODO.txt: todo update

2022.01.03:
* new: src/callf: Partially implemented `/use-stdin-as-piped-from-conin` flag to treat stdin as piped console input. Currently must be done through the injection into stdin pipe end process and is not implemented yet.

2022.01.03:
* changed: bin/contools/README_EN.txt: readme update

2022.01.02:
* changed: TODO.txt: todo update

2022.01.02:
* new: bin/contools: binaries update

2022.01.02:
* fixed: src/callf: workaround for the `ReadConsole` issue when it does block on the input while the output handle is closed
* changed: bin/contools/README_EN.txt: readme update

2022.01.02:
* changed: bin/contools/README_EN.txt: readme update

2022.01.02:
* new: bin/contools: binaries update

2022.01.02:
* new: src/callf: `/disable-ctrl-signals` and `/disable-ctrl-c-signal` flags to disable respective CTRL signals

2021.12.22:
* changed: TODO.txt: todo update

2021.12.21:
* new: bin/contools: binaries update

2021.12.20:
* fixed: src/callf: correct `//` flag parse

2021.12.20:
* changed: bin/contools/README_EN.txt: readme update

2021.12.20:
* new: tests: more manual tests

2021.12.12:
* new: bin/contools: binaries update

2021.12.12:
* new: src/callf: `/load-parent-proc-init-env-vars` flag to load environment variables existed on the moment of a process initialization in the parent or ancestor process
* changed: bin/contools/README_EN.txt: readme update

2021.12.05:
* changed: src/callf: code cleanup

2021.11.14:
* changed: bin/gnuwin32: removed obsolete binaries

2021.11.14:
* changed: bin: ritchielawrence, unxutils, wtee.exe: removed obsolete binaries (`contools/callf.exe` and `contools/callfg.exe` is used instead now)

2021.11.14:
* changed: bin/cygwin: removed obsolete binaries

2021.11.14:
* changed: bin/mingw: removed obsolete binaries

2021.10.30:
* new: bin/contools: binaries update

2021.10.30:
* fixed: src/callf: multibyte/unicode console input/output misuse

2021.10.28:
* new: bin/contools: binaries update

2021.10.28:
* fixed: src/callf: missed to update CRT console handle text mode (utf8/utf16) in case of reallocate or reattach console
* new: `README_EN.txt` file

2021.10.26:
* changed: TODO.txt: todo update

2021.10.26:
* fixed: src/_common: fixup in case of remote device open

2021.10.25:
* changed: src/_common/compatible_iterator/README_EN.txt: readme update

2021.10.23:
* changed: src/callf: removed not regular language feature flags, always apply language features for all processes in inheritance chain
* changed: src/callf: help update

2021.10.23:
* fixed: src/callf: crt runtime assert on exit
* changed: src/callf: help update

2021.10.23:
* new: bin/contools: binaries update

2021.10.23:
* fixed: src/callf: `/tee-std*-dup` flag implementation
* changed: src/callf: simplified use case for `/write-console-stdin-back` flag
* changed: src/callf: help update

2021.10.20:
* new: bin/contools: binaries update

2021.10.20:
* new: src: callf, printf: `/no-subst-pos-vars` to disable substitution only for positional variables

2021.10.16:
* new: bin/contools: binaries update

2021.10.16:
* new: src/callf: `/pipe-out-child` to pipe child stdout/stderr only

2021.10.04:
* new: bin/contools: binaries update

2021.10.04:
* new: src/callf: `/no-subst-empty-tail-vars` flag to disable substitution empty `{*}` and `{@}` variables
* changed: src/callf: always substitute empty `{*}` and `{@}` variables except if `/no-subst-empty-tail-vars` flag is defined

2021.09.30:
* new: bin/contools: binaries update

2021.09.30:
* new: src: callf, printf: environment expansion support for `{*}`, `{@}` argument variable values

2021.09.29:
* new: bin/contools: binaries update

2021.09.29:
* new: src: callf, printf: `{*}`, `{@}` argument variables
* changed: src/_common: code cleanup

2021.09.28:
* new: tests: todo file
* changed: src/_common/tacklelib: back merge from tacklelib project

2021.09.24:
* fixed: src/callf: help fixup
* changed: src/callf: help cleanup and other minor changes

2021.08.22:
* new: bin/contools: binaries update

2021.08.22:
* fixed: src/callf: incorrect first option parse
* fixed: src/callf: CreateProcess invalid standard handles inheritance issue even if standard handles are not inheritable (Windows 8 bug). Workarounded that by explicitly assign a null handle address to prevent inheritance into child process.
* fixed: tests: more manual tests pass
* changed: tests: readme update

2021.08.22:
* changed: tests: readme update

2021.08.20:
* new: tests: a manual test for user input with logging and console stdin write back
* changed: tests: readme update
* refactor: tests: tests rename

2021.08.20:
* new: tests: a manual test for user input with logging and console stdin write back
* changed: tests: manual test minor change

2021.08.20:
* fixed: src/callf: potential infinite input loop in case of character device handle with redirection into a log file, use `/write-console-stdin-back` flag to explicitly allow it
* fixed: src/callf: access violation in `_print_raw_message` function
* new: src/callf: `/write-console-stdin-back` to explicitly allow a console input write back with potential infinite input loop

2021.08.20:
* fixed: src/callf: incomplete stdin processing in case of character device handle with redirection into a log file
* new: tests: a manual test for user input with logging
* changed: tests: manual test minor change

2021.08.19:
* new: bin/contools: binaries update

2021.08.19:
* new: src/callf: `/no-stdin-inherit`, `/no-stdout-inherit`, `/no-stderr-inherit` to explicitly disable standard handles inheritance
* fixed: src/callf: ShellExecute elevation (verb=runas) under already elevated environment and parent process console (re)attachment in the child process involves standard handles inheritance even if standard handles are not character device and declared as not inheritable (Windows 7 bug). Workarounded that by explicitly assign a null handle address to prevent inheritance into child process.
* fixed: src/callf: missed case where reopened standard handle as the `CONIN$`/`CONOUT$`/`\\.\CON` automatically disabled for inheritance (character device must be always inheritable)
* fixed: tests: more manual tests pass
* changed: src/callf: more detailed debug prints
* changed: tests: readme update

2021.08.19:
* new: bin/contools: binaries update

2021.08.19:
* fixed: src/callf: inbound/outbound parent-child pipes incorrect usage
* fixed: src/callf: `/pause-on-exit*` flags incorrect usage in case of not executed elevation
* new: tests: more manual tests for `callf`/`callfg` utilities
* changed: src/callf: minor improvements
* changed: tests: manual tests improvements
* changed: tests: readme update

2021.08.18:
* fixed: src/callf: replaced all `fputws`, `fputs`, `fprintf`, `fwprintf` function calls by the `_print_raw_message` and `_print_std*_message` to correctly translate text from `Unicode` to `Ascii` and vice versa independently to `TCHAR` definition
* fixed: src/callf: minor fixup
* changed: tests: readme update

2021.08.17:
* new: src/callf: `/tee-conout-dup` flag to shortcut sequence of `/tee-stdout-dup 0` and `/tee-stderr-dup 0` options

2021.08.16:
* fixed: src/callf: missed to check for `ERROR_NO_DATA` error (pipe closed)
* changed: src/callf: `/stdin-echo <0|1>` option replaced by pair of `/stdin-echo` and `/no-stdin-echo` flags
* changed: src/callf: code cleanup
* refactor: src/callf: code refactor

2021.08.15:
* fixed: src/callf: stdin tee read from character device stdin
* changed: src/callf: reworked inbound and outbound pipe creation and utilization

2021.08.12:
* fixed: src/callf: missed case where stdin can be not reopened but has not a character device handle type and so must be piped into child stdin
* fixed: src/callf: missed case where stdout/stderr can be not reopened but has not a character device handle type and so must be piped from child stdout/stderr
* fixed: src/callf: rewrited child in/out piping to control piping over stdin/stdout/stderr independently
* new: src/callf: `/pipe-stdin-to-child-stdin`, `/pipe-child-stdout-to-stdout`, `/pipe-child-stderr-to-stderr`, `/pipe-inout-child` flags to explicitly declare piping to/from a child process
* refactor: src/callf: code refactor

2021.08.10:
* new: bin/contools: binaries update

2021.08.10:
* fixed: src/callf:
         Reworked (again) handles sanitizing as having unstable results under Windows 8.
         Removed `STD_*_HANDLE_DEFAULT_ADDRESS` and all related code (`_rearrange_std_handles`), Windows 8 does not utilize them anymore as was by default in the Windows 7.
         Removed `_resync_crt_std_handles` as having unstable results. Standard handles having too random nature under Windows 8 and, for example, two standard handles can has swapped addresses between 2 processes in inheritance chain (better completely detach CRT standard handles before (re)attach or (re)allocate console).
* fixed: src/callf: unstable 0xc0000142 exception in `cmd.exe` process in Windows 8
* fixed: src/callf: unstable manual tests crashes in Windows 8
* fixed: src/callf: manual tests pass under Windows 8 (several tests still fails, see readme file for details)
* fixed: src/callf: minor flags fixup
* fixed: src/callf: better os version detection
* changed: src/callf: code cleanup
* changed: tests: readme update
* refactor: tests: minor refactor

2021.08.09:
* new: bin/contools: binaries update

2021.08.09:
* fixed: src/callf: More handles sanitizing code to correctly handle CRT standrad handles reinitialization and resynchronization in GUI or console processes, because console can be (re)attached or (re)allocated after the CRT initialization.
* fixed: src/callf: almost all manual tests pass, except `31-test--01-elevate--02-user_input.bat` (ENABLE_PROCESSED_OUTPUT flag is removed from console mode flags by the system on handle duplication/creation) and `51-test--01-cui--01-print_help.bat` (resync function not completely resyncs Win32 handles into CRT, stderr and stdout can point the same handle)
* changed: src/callf: code cleanup
* changed: todo update
* refactor: src/callf: code refactor

2021.08.08:
* new: bin/contools: binaries update

2021.08.08:
* fixed: src/callf: missed to call `ShowWindow` in `callfg.exe` implementation
* fixed: src/callf: missed to remove stdin/stdout/stderr handle inheritance in case of reopen from file or named pipe
* fixed: src/callf: missed to remove stdin/stdout/stderr tee handle inheritance
* fixed: src/callf: other fixup
* fixed: src/callf: more tests pass
* new: src/callf: `/allow-gui-autoattach-to-parent-console` flag to allow `callfg.exe` auto attach to a parent process console if the current process has no attached console
* new: src/callf: The `/?` flag automatically implies `/allow-gui-autoattach-to-parent-console` flag in case of `callfg.exe` implementation to be able to print help. Can call now `callfg.exe /create-console /pause-on-exit /?` to print help.
* new: tests: more manual tests for `callf`/`callfg` utilities
* refactor: tests: minor refactor

2021.08.07:
* fixed: src/callf: Windows XP/7 workarounds depending to the article: https://github.com/rprichard/win32-console-docs
* fixed: src/callf: Reworked (again) handles sanitizing to correctly handle standard handles inheritance: https://github.com/rprichard/win32-console-docs#createprocess-traditional
* changed: tests: readme update

2021.08.06:
* fixed: src/callf: correct process of the `/no-window` flag in case of the `CreateProcess`
* new: src/callf: `/no-window-console` flag to create a child process with invisible console
* new: src/callf: `/detach-console` and `/detach-child-console` flags to detach respective process console
* new: src/callf: `/allow-conout-attach-to-invisible-parent-console` flag to allow conout attach to invisible parent console
* refactor: src/callf: flags minor refactor

2021.08.04:
* new: tests: readme file
* changed: src/callf: code cleanup, removed unused code
* refactor: src/callf: code refactor
* refactor: tests: minor refactor

2021.08.01:
* changed: src/callf: code changes for `USE_CONSOLE_STD_HANDLES_REATTACH_BY_CRT_REOPEN=0`
* changed: src/callf: code improvements for `_set_crt_std_handle` function

2021.07.31:
* new: bin/contools: binaries update

2021.07.31:
* refactor: tests: tests refactor, moved test number in a file name at first to use with a console terminal completion feature, added test sub numbers in file names

2021.07.31:
* changed: src/callf: help update
* changed: src/printf: minor changes
* refactor: src/callf: code refactor

2021.07.30:
* fixed: src/callf:
         Reworked handles sanitizing to correctly reopen handles through the `_freopen` instead of `CreateFile` to finally fix CRT handles desync with the Win32 API descriptor table.
         Now an invalid or broken Win32 handle is closed through the CRT (`fclose` + `_close`) at first before reopen it through the CRT (that is, otherwise the `freopen` won't deallocate the previously allocated handle and instead allocate the new one).
         Removed the `_fileno` function usage in case of update a target CRT standard handle and is replaced by constants (`STDIN_FILENO`/`STDOUT_FILENO`/`STDERR_FILENO`) because of incorrect results while been using it (the same issue, `freopen` does not reuse the previous CRT descriptor, it allocates the new one, so the `_fileno` will point a descriptor greater than `2`).
* refactor: src/callf: code refactor

2021.07.29:
* fixed: src/callf: reset console mode on reopened handles in case if they are closed (null) upon `callf` utility start (started by `callfg.exe` utility), otherwise line return prints as character(s)

2021.07.29:
* new: tests: more manual tests for `callfg` utility

2021.07.28:
* fixed: src/callf: missed to close duplicated handle after check on registration in the CRT descriptor table even if it is registered (in that case the CRT owns it and responsible to close it)
* fixed: src/callf: missed to sanitize standrad handles in case if they are closed (null) upon `callf` utility start (started by `callfg.exe` utility)
* fixed: src/callf: close stdout handle only if it is not a character device handle, otherwise another process in process inheritance tree may lose the handle buffer to continue interact with it
* fixed: src/callf: call `DisconnectNamedPipe` only if opened as named pipe

2021.07.28:
* new: tests: added manual tests to test start of `callf.exe` by `callfg.exe` utility

2021.07.27:
* fixed: src/callf: missed to enable `/no-expand-env` flag in case of elevated callf process

2021.07.26:
* new: tests: more manual tests for `callf` utility
* new: tests: manual tests for `callfg` utility
* changed: bin/contools: readme update

2021.07.26:
* new: bin/contools: binaries update

2021.07.26:
* fixed: src/callf: WOW64 FileSystem redirection restore on exit
* fixed: src/callf: missed to update CRT standard handles immediately after a console window (re)allocation
* new: src/callf: The `callfg.exe` variant of the `callf` utility without initial console window (GUI) (GUI). Exists to workaround some 3dparty application issues like in the Bash shell executable which throws an error after a console window reallocation: `select_stuff::wait: WaitForMultipleObjects failed, Win32 error 6`.
* new: src/callf: `/create-console` flag now can allocate a console window from the `callfg` utility without initial console
* changed: src/callf: console reallocation reworked

2021.07.26:
* fixed: src/callf: incorrect parse of `/replace-args`, `/r`, `/replace-args-in-tail`, `/ra`, `/set-env-var`, `/v` options
* new: src/callf: `/allow-throw-seh-except` flag to allow to throw SEH exceptions out of process
* new: src/callf: `/pause-on-exit`, `/pause-on-exit-if-error`, `/pause-on-exit-if-error-before-exec` flags to be able to pause on exit before close a console
* changed: src/callf: catch all SEH exceptions by default and convert into specific error code
* changed: todo update

2021.07.25:
* fixed: src/callf: access violation around usage of the `/E<N>`, `/EE<N>`, `/S<N>`, `/SE<N>` flags
* fixed: src/callf: missed to translate for elevation the `/disable-wow64-fs-redir` flag

2021.07.25:
* new: bin/contools: binaries update

2021.07.25:
* fixed: src: callf, printf, envvarcmp: `Flags` initialization
* fixed: src/callf: `Options` merge
* new: src/callf: `/expand-env<N>`, `/E<N>`, `/EE<N>` flags to expand `${...}` environment variables exclusively for `<N>` command line argument and turn off the expansion for the rest arguments
* new: src/callf: `/subst-var<N>`, `/S<N>`, `/SE<N>` flags to substitute `{...}` variables exclusively for `<N>` command line argument and turn off the substitution for the rest arguments
* new: src: callf, printf: `/allow-expand-unexisted-env` to allow expansion of unexisted `${...}` environment variables in all command line arguments
* new: src: callf, printf: `/allow-subst-empty-args` to allow substitution of empty `{...}` variables in all command line arguments
* changed: src: callf, printf: Disabled by default substitution of empty `{...}` variables in command line arguments. Now you have to explicitly enable the substitution of empty command line arguments by `/allow-subst-empty-args` or `/SE<N>` flags.
* changed: src: callf, printf, envvarcmp: `Flags` initialization reimplemented
* refactor: src/callf: code refactor

2021.07.22:
* new: bin/contools: binaries update

2021.07.22:
* new: src/callf: `/disable-wow64-fs-redir` flag to be able to use 32-bit `callf.exe` process in the 64-bit console environment

2021.07.21:
* new: bin/contools: binaries update

2021.07.21:
* fixed: src/callf: missed to check a handle on registered state in the CRT (`_set_crt_std_handle` function), otherwise the CRT `_dup` function would attempt to close the handle before it's duplication (random invalid handle errors)
* fixed: src/callf: missed to check `ConnectNamedPipe` on `ERROR_PIPE_CONNECTED` error which means connection is accomplished before the function call
* fixed: src/callf: all tests pass
* fixed: src/callf: other minor fixup
* fixed: tests: minor fixup
* changed: src/callf: help update
* refactor: src/callf: code cleanup

2021.07.21:
* new: tests: more manual tests for `callf` utility

2021.07.20:
* new: tests: manual tests for `callf` utility
* changed: bin/contools: readme update

2021.07.18:
* fixed: src/callf: missed to close server named pipe end after connection timeout
* changed: src/callf: rewrited code cleanup for all pipe threads to always disconnect a server named pipe end together with the handle close even if connection is not accomplished or SEH exception is thrown, otherwise a client may be blocked on the `PeekNamedPipe` call in an infinite loop

2021.07.16:
* new: bin/contools: binaries update

2021.07.16:
* fixed: src/callf: `{...}` sequence escaping with backslash
* fixed: src/callf: missed to translate `/replace-arg*` and `/set-env-var` options for elevation
* new: src/callf: environment variables expansion in `<value>` for `/v <name> <value>` options
* new: src/callf: `/D .` option to pass current directory into child process
* changed: src/callf: removed commenting of backslash characters in a command line while translating for elevation
* changed: src/callf: code cleanup

2021.07.16:
* new: bin/contools: binaries update

2021.07.16:
* fixed: src/callf: incorrect leading `{N}` variable substitution

2021.07.15:
* fixed: src/callf: error message `stdout write error: win_error=0x000000E9 (233)` in particular cases
* fixed: src/callf: missed standard handles reread after change
* changed: todo update

2021.07.14:
* fixed: src/callf: Better standard handles sanitizing after process elevation (sometimes `GetFileType` returns `FILE_TYPE_UNKNOWN` on either stdout or stderr, have to correctly reopen them from `CONIN$` and `CONOUT$` pseudo files).
* fixed: src/callf: Application abort after `std::runtime_error` exception in the `std::locale(".65001")` call (C++11 standard does not support unicode code page locale). Fixed by switching from absolute file path compare (`GetFullPathName` + `tolower`) to opened file handles compare (`GetFileInformationByHandle` + `GetFileInformationByHandleEx`)
* fixed: src/callf: Error message `could not set std* handle information: ...`. A default standard handle can not be changed for inheritance, we can change for inheritance only reopened standard handles.
* fixed: src/callf: missed to pass internal "no inherit" flag to `CreateProcess` function
* changed: src/callf: Rewrited the check of the same file usage. Instead of use the absolute file path compare (`GetFullPathName` + `tolower`), do use the opened file handles compare (`GetFileInformationByHandle`/`GetFileInformationByHandleEx`). As an addition, file hard links now compares correctly.
* refactor: src/callf: code refactor

2021.07.11:
* fixed: src/callf: accidental break in command line variables substitution
* changed: bin/contools: readme update

2021.07.11:
* fixed: src/callf: invalid standard output handle temporary workaround through a complement standard handle duplication (after `_dup2` fail)
* fixed: src/callf: apply `/eval-backslash-esc` and `/eval-dbl-backslash-esc` after `/replace-arg<N> <from> <to>` to be able to replace all backslashes in an argument before backslash evaluation
* fixed: src/callf: backslash escaping must be done before the command line elevation translation
* fixed: src/callf: environment variables set must be done before `${...}` environment variables expansion
* new: src/callf: `/replace-arg<N> <from> <to>` and `r<N> <from> <to>` options to replace per argument basis
* new: src/callf: `/eval-backslash-esc<N>` and `e<N>` flags to evaluate backslash escaping per argument basis
* changed: bin/contools: readme update
* refactor: src: callf, printf: code refactor

2021.07.09:
* new: bin/contools: readme file

2021.07.09:
* new: bin/contools: binaries update

2021.07.09:
* fixed: src/callf: use `GetModuleFileName` instead of `argv[0]` in case if a program name is not passed on the command line
* fixed: src/callf: minor fixup
* new: src/callf: `/replace-args <from> <to>`, `/replace-args-in-tail <from> <to>` options to replace strings in command line
* new: src/callf: `/set-env-var <name> <value>` option to set environment variable

2021.07.06:
* fixed: src/callf: ignored check on not valid flag or option
* fixed: src/callf: elevation examples is changed to run the same way under already elevated environment

2021.07.06:
* new: bin/contools: binaries update

2021.07.06:
* fixed: src/callf: missed to close all anonymous or client named pipe handles prepared for a child process if them is not inheritable or a child process is not executed (parent process waiting for read from an anonymous pipe when a child process is already exited)
* fixed: src/callf: missed to disconnect server named pipe before wait a thread with servere named pipe connect (process hangs on elevation dialog cancel)
* fixed: src/callf: avoid start of any pipe stream thread if a child process is not executed (excluding idle execution)
* fixed: src/callf: cancel all named pipe connection threads before read pipe stream threads errors
* fixed: src/callf: `error: (null)` error message after elevation dialog cancel (incomplete or incorrect code around `_vsnwprintf`, `vsnwprintf`, `_snwprintf`, `_snprintf` functions)
* new: src/callf: more example in the help
* changed: src/callf: always close all handles irrespectively to a child process execution

2021.07.05:
* fixed: src/callf: access violation in the `invalid_format_flag_message` function
* fixed: src/callf: parse of elevation nested flags

2021.07.05:
* fixed: src/callf: `argv[0]` parameter as argument instead of a program
* new: src/callf: `/elevate` flag to self elevate `callf.exe` process with builtin command line translation
* new: src/callf: `/elevate{ <ParentFlags> }[{ <ChildFlags> }]` option for limited set of flags to declare flags exceptionally for the parent (not elevated) `callf.exe` process in case of elevation is executed and for the child (elevated) `callf.exe` process in case of elevation is executed
* new: src/callf: `/promote{ <Flags> }` option for limited set of flags to declare flags for both `callf.exe` process instances in case of elevation is executed, otherwise for the parent `callf.exe` process only
* new: src/callf: `/promote-parent{ <Flags> }` option for limited set of flags to declare flags for parent `callf.exe` process only independently to elevation use or execution
* changed: src/callf: Changed behaviour for the `/create-[in|out]bound-*` options, now them only create server part of a named pipe end instead of both. All `/create-[in|out]bound-pipe-*` options renamed into `/create-[in|out]bound-server-pipe-*`.
* refactor: src/callf: code refactor

2021.07.04:
* fixed: src: callf, chcp, clearcache, envvarcmp, printf, retakeowner: command line variables substitution must avoid `${N*}` variables (where N - is a number) if environment expansion is disabled (`/no-expand-env` flag)

2021.06.30:
* changed: src/callf: todo update

2021.06.25:
* new: src/callf: `{pid}` and `{ppid}` placeholders to use in pipe names to generate unique pipe name

2021.06.24:
* new: bin/contools: binaries update

2021.06.24:
* fixed: src/callf: ctrl-c handler disable after child process exit
* fixed: src/callf: always create inbound pipe from child process to console output if outbound pipe to child process from console input is created
* changed: src/callf: minor changes

2021.06.23:
* new: bin/contools: binaries update

2021.06.23:
* new: src/callf: `/reopen-std[in|out|err]-as-[server|client]-pipe <pipe>` options to reopen standard handle as a named pipe
* new: src/callf: `/tee-std[in|out|err]-as-[server|client]-pipe <pipe>`, `/tee-std[in|out|err]-pipe-flush` options to duplicate output to stdin/stdout/stderr into a named pipe
* new: src/callf: `/create-inbound-pipe-to-std[out|err] <pipe>`, `/create-outbound-pipe-from-stdin <pipe>` options to create a named pipe instead of anonymous pipe to read/write from/to child process stdin/stdout/stderr.
* new: src/callf: `/tee-std[in|out|err]-flush` flag to flush both a tee file and a tee named pipe
* new: src/callf: Use `.` string as `ApplicationNameFormatString` in a command line to avoid child process creation (idle execution). Useful to test a server named pipe connection await or just redirect output from an inbound named pipe to the console window.
* new: src/callf: `/no-std-inherit` flag to prevent standard handles inheritance into child process
* new: src/callf: `/pipe-stdin-to-stdout` flag to explicitly pipe stdin to stdout (applies the `/no-std-inherit` flag)

2021.06.23:
* fixed: src/callf: use `STDIN_FILENO`/`STDOUT_FILENO`/`STDERR_FILENO` instead of `_fileno(stdin)`/`_fileno(stdout)`/`_fileno(stderr)` in call to `_dup2`, otherwise sequenced call to `_close` would close input parameter handle w/o a duplication
* fixed: src/callf: missed stdout flush (and disconnection if a server named pipe end) before close

2021.06.16:
* changed: src/callf: now only the main thread prints info/errors to stdout/stderr, all worker threads only postpone info/errors to the main thread (excluding traffic between stdin and stdout/stderr)

2021.06.11:
* new: src/callf: Now by default if the process console window is not owned and the process is going to close by an error before execute a child process, then the output does duplicate into a parent process console. To disable that behaviour the `/disable-conout-duplicate-to-parent-console-on-error` flag is added.

2021.06.10:
* fixed: src/callf: minor fixup
* new: src/callf: improved stdout/stderr output, use common format string prefix for all stderr output (example: `[<date> <time>] [<pid>] [<module>] error: <message>`)
* refactor: src/callf: code refactor
* refactor: src/chcp: minor refactor
* refactor: src/envvarcmp: minor refactor

2021.06.09:
* fixed: src/callf: The `0xC0000008: An invalid handle was specified.` SEH exception in random `CloseHandle` function call. Missed to duplicate handle before handle ownership transfer in the function `_open_osfhandle` in the function `_set_crt_std_handle`.
* fixed: src/callf: missed case where to apply `/own-console-title` option
* new: src/callf: `/console-title` option
* refactor: src/callf: code refactor

2021.06.02:
* fixed: src/callf: accidental usage of `toupper` instead of `tolower` as should for a file path case insensitive comparison
* refactor: src/callf: extract source code into separate source files

2021.06.01:
* new: bin/contools: binaries update

2021.06.01:
* fixed: src/callf: minor fixup
* changed: src/callf: `/mutex-std-writes`, `/mutex-tee-file-writes` now behaves differently and always mutual exclude writes on a unique absolute case insensitive file path between different processes
* refactor: src/callf: code refactor

2021.05.31:
* fixed: src/callf: missed to check the parent console window handle on equality with the current process console window handle to detect console window inheritance from the parent process
* new: src/callf: `/create-console-title`, `/own-console-title` options to change console title
* changed: src/callf: `/detach-console` flag is replaced by `/create-console` flag because a console detachment creates a standalone instance of console window, `/create-console` flag now has priority over the `/attach-parent-console` flag
* changed: src/callf: `/use-parent-console` flag is removed, `/create-child-console` is used as an opposite replacement
* changed: src/callf: `/create-console` and `/attach-parent-console` flags now always applies at very beginning of the application start, before parse of all other flags and output to the stdout or stderr
* refactor: src/callf: code refactor

2021.05.30:
* fixed: src/callf: missed `tee-std[in|out|err]-dup <fileno>` option check on not opened `<fileno>`
* fixed: src/callf: missed to seek the end of a file after open for write with append on standard handle reopen and a tee file create
* new: src/callf: `/output-flush`, `/inout-flush`, `/tee-std[in|out|err]-file-flush`, `/tee-output-flush`, `/tee-inout-flush` flags for more addressed flush
* changed: src/callf: All std and tee files now opens by default with the append instead of the overwrite option, all `*-append` flags replaced by `*-truncate`. This will avoid an excessive usage of append option and accidental overwrite a log file in nested callf.exe calls.

2021.05.30:
* new: bin/contools: binaries update

2021.05.30:
* fixed: src/callf: auto attach to the visible parent process console in case if current process console is not visible to fix stdout/stderr attachment to the hidden console window
* fixed: src/callf: correct current process console detachment

2021.05.28:
* fixed: src/callf: multiple `/reopen-std[out|err] <file>` or `/tee-std[in|out|err] <file>` option usage with the same `<file>` now will reuse a previously opened handle instead open of a new one to fix the output mix
* new: src/callf: `/std[out|err]-dup`, `/tee-std[in|out|err]-dup <fileno>` options to replace a sequence with respective `/reopen-std[out|err] <file>` or `/tee-std[in|out|err] <file>` options with the same `<file>`
* changed: src/callf: replaced all fopen/fwrite/fflush calls by the Win32 CreateFile/WriteFile/FlushFileBuffers calls to avoid any CRT buffering overhead over raw binary writes
* refactor: src/callf: code refactor

2021.05.27:
* fixed: src/callf: `/showas 0` accident ignore
* fixed: src/callf: lock on stdin pipe read while the output handle is closed or broken (pipe)
* fixed: src/callf: immediate exit on error from the stdin thread write function on the output handle w/o check on child process existence
* new: src/callf: `/attach-parent-console` to explicitly reattach console
* new: src/callf: `/mutex-std-writes`, `/mutex-tee-std-file-writes <handles>` options to mutual exclude writes into standard handles and tee files/pipes
* new: src/callf: `/stdin-output-flush` to flush after each write into an output handle connected with the process stdin
* new: src/callf: `/std[out|err]-flush` to flush after each write into the process stdout/stderr

2021.05.26:
* new: bin/contools: binaries update

2021.05.26:
* fixed: src/callf: missed stdout/stderr initialize in call to CreateProcess if the tee is not used (for example, in empty call: `callf.exe "" "cmd.exe /k"`)
* fixed: src/callf: `/reopen-stdout-as` and `/reopen-stderr-as` should open files for binary write
* new: src/callf: `/reopen-stdout-append`, `/reopen-stderr-append`, `/reopen-stdout-flush`, `/reopen-stderr-flush` flags to open for append and flush after each write for reopened stdout/stderr
* refactor: src/callf: code refactor

2021.05.26:
* new: bin/contools: binaries update

2021.05.26:
* changed: src/chcp: separately print and set console input and output code pages
* changed: src/printf: minor changes

2021.05.25:
* new: bin/contools: binaries update

2021.05.25:
* fixed: src/printf: application linked with the Unicode Character Set option does convert command line string into Unicode representation, so we must convert all strings back if the console output code page is used
* fixed: src/printf: missed to use console current code page
* fixed: src/printf: missed `/chcp` flag implementation
* fixed: minor fixup
* new: chcp utility to change and print console output code page, can return different results opposed to the Windows `chcp.com` utility

2021.05.24:
* new: bin/contools: binaries update

2021.05.24:
* new: src/callf: ShellExecute call support through the `/shell-exec <Verb>` option
* new: src/callf: `/D <CurrentDirectory>` option to use in both the CreateProcess and ShellExecute
* new: src/callf: `/showas <ShowWindowAsNumber>` option to use in both the CreateProcess and ShellExecute
* new: src/callf: `/print-shell-error-string`, `/no-sys-dialog-ui`, `/shell-exec-expand-env`, `/use-parent-console`, `/init-com`, `/wait-child-start` flags related to the ShellExecute
* refactor: src: callf, printf: minor refactor

2021.05.24:
* fixed: src/callf: `?` characters in the win32 error message in case if `/print-win-error-string` flag is used under non english locale

2021.05.21:
* new: src: callf, printf: `/eval-dbl-backslash-esc` or `/e\\` flag to evaluate double backslash escape sequence
* new: callf: help examples over recursion call

2021.05.20:
* fixed: src/callf: minor fixup

2021.05.20:
* new: bin/contools: binaries update

2021.05.20:
* fixed: src: callf, printf: missed to append string before the `{` character if `/no-subst-vars` flag is used
* fixed: src/callf: invalid `<ApplicationNameFormatString>` command line parameter parse
* new: src/callf: `/win-error-langid` option to explicitly set language id for win32 error messages
* changed: src: callf, printf: expand all ${...} variables in all command line arguments before {...} variables
* changed: src: callf, printf: leave ${...} string as is if respective environment variable has empty value

2021.05.20:
* new: bin/contools: binaries update

2021.05.20:
* fixed: src/callf: missed to close underlying pipe into the stdin of the child process if parent stdin pipe is being closed
* fixed: src/callf: missed to close reopened stdin/stdout/stderr handles
* fixed: src/callf: other multiple fixup
* new: src: callf, printf: added `//` command line parameter to explicitly stop parse of flag parameters
* new: src/callf: `/eval-backslash-esc` or `/e` flag to evaluate backslash escape sequences
* changed: todo update
* refactor: src/callf: minor refactor

2021.05.12:
* new: bin/contools: binaries update

2021.05.12:
* new: src/printf: `/eval-backslash-esc` or `/e` flag to evaluate backslash escape sequences

2021.05.01:
* new: bin/contools: binaries update

2021.04.30:
* new: src/callf: stdin/stdout/stderr with builtin `tee` implementation (`/tee-*` flags)
* new: src/callf: stdin/stdout/stderr reopen from a file or special `CON`/`CONIN$`/`CONOUT$` input/output devices (`/reopen-*` flags)
* new: src/callf: stdin/stdout/stderr with builtin redirection into/from child process
* new: src/callf: stdin/stdout/stderr with builtin codepage change for console read/write (`/chcp-*` flags), unicode support with codepage `65001`
* new: src/callf: explicitly control stdin (must be console) echo mode (`/stdin-echo` option)
* new: src/callf: print as is without variables expansion or substitution (`/no-expand-env` and `/no-subst-vars` flags)
* new: src/callf: return arbitrary error codes (`/ret-*` flags)
* new: src/callf: other command line options and features (experimental)
* new: src/printf: stdout with builtin codepage change for console write (`/chcp` flag), unicode support with codepage `65001`
* new: src/printf: print as is without variables expansion or substitution (`/no-expand-env` and `/no-subst-vars` flags)
* new: src/printf: other command line options and features (experimental)
* changed: src/callf: converted to use TCHAR instead char (Unicode characters set)
* changed: src/printf: converted to use TCHAR instead char (Unicode characters set)
* changed: src/envvarcmp: converted to use TCHAR instead char (Unicode characters set)
* changed: Projects: callf, clearcache, envvars, envvarcmp, printargs, printf: projects switched to build under Unicode characters set
* changed: src: callf, clearcache, envvars, envvarcmp, pipetimes, printf, retakeowner, thlibautocfg: command line arguments parse reimplementation
* changed: src: merge common error codes between projects
* changed: todo update
* refactor: src: multiple projects formatting changes and code cleanup

2021.03.11:
* fixed: compatible_iterator.hpp: fixup under msvc, gcc, clang
* changed: readme update

2021.03.09:
* fixed: src/callf: parse of `{...}` placeholders in tail arguments
* new: src: `compatible_iterator` implementation, upgraded up to C++11 standard usage
* new: src/callf: code segments reuse with different inner containers through the usage of `compatible_iterator` instead of a direct usage of STL iterators
* changed: src: code cleanup

2021.03.03:
* new: todo file

2021.02.08:
* changed: Projects: moved to build for the Windows XP x86 SP2 or Windows XP x64 SP1
* changed: bin/contools: rebuild to run at least under Windows XP x86 SP2
* changed: bin/wshbazaar/wshdynacall: wshdynacall32.dll: rebuild to run at least under Windows XP x86 SP2

2021.02.04:
* new: bin: `conutils` from `ss64.net`

2021.01.07:
* new: bin/sysinternals: `movefiles.exe` and `pendmoves.exe` utilities

2020.12.02:
* new: src/wshbazaar/wshdynacall: `DllUnregisterServer` implementation

2020.12.02:
* fixed: x64 configuration build fixup
* new: x64 configuration
* new: Born's WSH dynacall 32-bit dll (http://www.borncity.com/web/WSHBazaar1/WSHDynaCall.htm ) port to msvc2015 to enable Win32 calls from vbs scripts

2020.10.25:
* new: ritchielawrence tee implementation (mtee)

2020.02.09:
* fixed: wxwidgets build fixup
* new: wxFileDialog: added support a directory selection
* changed: wxFileDialog: rebuilded versus wxwidgets 3.1.3

2019.05.07:
* new: changelog file
